package br.skytef.stmanager.daos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import br.skytef.stmanager.entities.ProdutoEntity;
import br.skytef.stmanager.utils.Pool;

public class ProdutoDao {

	/**
	 * Variável para conexão, obtido através de um Pool(br.skytef.stmanager.utils.Pool)
	 */
	private static Connection conexao = null;	
	/**
	 * Inserir nova tarefa/registro
	 * @param novaTarefa
	 */

	public void inserir(ProdutoEntity produto){
		try {
			conexao = Pool.getConnection();
			String query = "INSERT INTO produto (nome,descricao,valorCusto,data_inclusao)"
					+ "VALUES(?,?,?,?);";
			
			PreparedStatement preparedStmt = conexao.prepareStatement(query);
			preparedStmt.setString				(1,produto.getNome());
			preparedStmt.setString				(2,produto.getDescricao());
			preparedStmt.setDouble				(3,produto.getValor());
			preparedStmt.setTimestamp			(4,produto.getData_inclusao());
			preparedStmt.execute();	
			conexao.close();

		} catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		}catch (ClassCastException e) {
			System.out.println("Classe erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		}
	}	
	
	public ProdutoEntity buscar(String nome){
		ProdutoEntity produto = null;
		try	{
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM produto WHERE nome LIKE '"+ nome +"';");
			if (rs.next()) {
				do {
					 produto = new ProdutoEntity();
					 produto.setId(rs.getInt("id"));
					 produto.setNome(rs.getString("nome"));
					 produto.setDescricao(rs.getString("descricao"));
					 produto.setValor(rs.getDouble("valorCusto"));
					 produto.setData_inclusao(rs.getTimestamp("data_inclusao"));
				} while (rs.next());
			}
			conexao.close();			
		}catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		} 
		return produto;
	}
	
	
	public ProdutoEntity buscarId(long idProdutoCliente){
		ProdutoEntity produto = null;
		try	{
			conexao = Pool.getConnection();
			Statement st = conexao.createStatement();
			ResultSet rs = st.executeQuery("SELECT * FROM produto WHERE id = '"+ idProdutoCliente +"';");
			if (rs.next()) {
				do {
					 produto = new ProdutoEntity();
					 produto.setId(rs.getInt("id"));
					 produto.setNome(rs.getString("nome"));
					 produto.setDescricao(rs.getString("descricao"));
					 produto.setValor(rs.getDouble("valorCusto"));
					 produto.setData_inclusao(rs.getTimestamp("data_inclusao"));
				} while (rs.next());
			}
			conexao.close();			
		}catch (SQLException e) {
			System.out.println("SQL erro: "+ e);
		} catch (Exception e) {
			System.out.println("Geral erro: "+ e);
		} 
		return produto;
	}

	
}

